---
title: Configuration settings
summary: Configuration keys consumed by this library, retrieval methods, and runtime dependencies.
status: draft
owner: SAIF Case Management
last_reviewed: 2026-08-21
library: SAIF.Services.Printing
reference_type: embedded
---

# Configuration settings

`SAIF.Services.Printing` retrieves four service-endpoint/path settings and two boolean environment properties through `EnvironmentServiceBase`, and declares two `ApplicationSettingsBase` ("My.Settings") design-time Web Reference URLs that are never read by consuming code at runtime. No `ConfigurationManager.AppSettings`, secure settings, or direct database connection configuration were found in this library's own source.

## Configuration retrieval methods

| Method | Class / Interface | Namespace | Usage pattern |
| --- | --- | --- | --- |
| `EnvironmentServiceBase.GetConfigSetting(string key)` | `EnvironmentServiceBase` (field-typed `_environmentService`, obtained via `AppGlobal.EnvironmentService` or injected through a constructor overload) | `SAIF.Framework.Security`* | Stored in a private field in the constructor, then `GetConfigSetting("<key>")` is called once per key to initialize a URL or path field/property. Used in `clsPrint.New(envSvc)`, `clsRSPrint.New(envSvc)`, and `Reporting.ReportBase.New(envSvc)`. |
| `EnvironmentServiceBase.IsProduction` (property) | `EnvironmentServiceBase` | `SAIF.Framework.Security`* | Read once in `clsPrint.New` to select `m_Environment = "Prod"`/`"Dev"`. |
| `EnvironmentServiceBase.IsWeb` (property) | `EnvironmentServiceBase` | `SAIF.Framework.Security`* | Read in `Reporting.ReportBase.Render` to select the security platform (`clsSecurityPrincipal.Platform.Web` vs. another platform). |
| `AppGlobal.EnvironmentService` (static accessor) | `AppGlobal` | `SAIF.Framework.Security` | Default argument in the library's parameterless constructors (`clsPrint.New()`, `clsRSPrint.New()`, `ReportBase.New()`), each delegating to the environment-service-accepting overload. |
| `ApplicationSettingsBase` (design-time `My.Settings` / `MySettings`) | `SAIF.Services.Printing.My.MySettings` | `SAIF.Services.Printing.My` | Auto-generated typed settings class exposing two read-only, application-scoped `WebServiceUrl`-attributed string properties. Not referenced anywhere in `clsPrint.vb`, `clsRSPrint.vb`, or `Reporting\*.vb`; consumed only by Visual Studio Web Reference tooling at design/update time. |

No `ConfigurationManager.AppSettings` calls, no `DbConnectionManager` usage, and no `GetSecureConfigSetting`/`SystemHashUtil` usage were found anywhere in this library's own source.

## Environment API settings

Settings retrieved via `EnvironmentServiceBase` (centralized environment configuration service).

| Setting key | Method | Data type | Purpose | Consuming class | Source |
| --- | --- | --- | --- | --- | --- |
| `documentGeneratorServiceUrl` | `GetConfigSetting` | String (URL) | Sets `m_Xpresso.Url`, the SOAP endpoint for the `xpresso.clsGenerate` document-generation service | `clsPrint` (constructor) | `SAIF.Services.Printing\clsPrint.vb` (line 251) |
| `documentMSMQPath` | `GetConfigSetting` | String (path) | Sets `m_MessagePath`, the MSMQ queue path used for asynchronous document distribution | `clsPrint` (constructor) | `SAIF.Services.Printing\clsPrint.vb` (line 252) |
| `idmFilePath` | `GetConfigSetting` | String (path) | Backs the `IDMPath` read-only property, re-queried on each access rather than cached | `clsPrint` (`IDMPath` property) | `SAIF.Services.Printing\clsPrint.vb` (line 183) |
| `sqlReportingServiceUrl` | `GetConfigSetting` | String (URL) | Sets `m_RS.Url`, the SOAP endpoint for `SharepointReporting.ReportExecutionService` | `clsRSPrint` (constructor) | `SAIF.Services.Printing\clsRSPrint.vb` (line 108) |
| `IsProduction` | `EnvironmentServiceBase.IsProduction` (boolean property, not a `GetConfigSetting` key) | Boolean | Selects `m_Environment = "Prod"`/`"Dev"` | `clsPrint` (constructor) | `SAIF.Services.Printing\clsPrint.vb` |
| `IsWeb` | `EnvironmentServiceBase.IsWeb` (boolean property, not a `GetConfigSetting` key) | Boolean | Selects security platform (`clsSecurityPrincipal.Platform.Web` vs. other) | `Reporting.ReportBase.Render` | `SAIF.Services.Printing\Reporting\ReportBase.vb` |

**Values are unknown.** None of the four `GetConfigSetting` keys has a matching static entry in `Web.config` or `app.config` under this library, and no constants file or `EnvironmentConfigKeys`-style declaration for them was found in this library's scope.** All four values are presumably resolved at runtime from a centralized SAIF environment-configuration service (the concrete `EnvironmentServiceBase` implementation returned by `AppGlobal.EnvironmentService`), whose backing store is outside the scope of this library.*

## AppSettings (Web.config)

No `<appSettings>` section exists in either `Web.config` or `app.config` for this library, and no `ConfigurationManager.AppSettings` call was found in the scanned source. This catalog is empty.

## Database connection configuration

No `DbConnectionManager` usage, no `GetOracleConnectionString`/`GetSqlConnectionString` calls, and no `<connectionStrings>` section were found in this library's source or config files. The library performs no direct database access of its own.** This catalog is empty.

The `oracle.manageddataaccess.client` custom section and `DbProviderFactories` registration present in both `Web.config` and `app.config` exist solely because the assembly transitively references `Oracle.ManagedDataAccess` (via `SAIF.BOF.Framework`); they do not correspond to any connection actually opened by code in this library.*

## Secure settings

No `GetSecureConfigSetting` calls and no `SystemHashUtil.ComputeHash`/`SystemType` usage were found anywhere in this library's scanned source. This catalog is empty.

## Design-time settings (`ApplicationSettingsBase`)

| Class | Property | Type | Default value | Source |
| --- | --- | --- | --- | --- |
| `SAIF.Services.Printing.My.MySettings` (`Inherits ApplicationSettingsBase`) | `SAIF_Services_Printing_xpresso_clsGenerate` | String (application-scoped, `SpecialSetting.WebServiceUrl`) | `http://xpressionsdev:8000/wsDocuments/clsGenerate.asmx` | `SAIF.Services.Printing\My Project\Settings.Designer.vb`; value stored in `SAIF.Services.Printing\app.config` |
| `SAIF.Services.Printing.My.MySettings` (`Inherits ApplicationSettingsBase`) | `SAIF_Services_Printing_SharepointReporting_ReportExecutionService` | String (application-scoped, `SpecialSetting.WebServiceUrl`) | `http://reports.saif.com/_vti_bin/ReportServer/ReportExecution2005.asmx` | `SAIF.Services.Printing\My Project\Settings.Designer.vb`; value stored in `SAIF.Services.Printing\app.config` |

Both properties are auto-generated, read-only, and carry `SpecialSetting.WebServiceUrl`, marking them as Visual Studio "Web Reference URL" settings rather than general-purpose application settings. They back the two Web References under `Web References\xpresso\` and `Web References\SharepointReporting\`. No code path in `clsPrint.vb`, `clsRSPrint.vb`, or `Reporting\*.vb` reads `My.Settings.*`/`MySettings.Default.*` — both proxy classes instead hard-set their `.Url` property from `GetConfigSetting` calls in their constructors, which run after the Web Reference proxy is constructed with its design-time default URL, so the `ApplicationSettingsBase` value is always overwritten at runtime for both proxies.*

## Custom configuration sections

| Section name | Handler type | Purpose |
| --- | --- | --- |
| `oracle.manageddataaccess.client` | `OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess` | Registers ODP.NET Managed Driver configuration for `Oracle.ManagedDataAccess.Client`. Present in both `Web.config` and `app.config`; not exercised by any Oracle connection/command code in this library's own source — a transitive dependency artifact from `Oracle.ManagedDataAccess` being referenced (via `SAIF.BOF.Framework`).* |
| `applicationSettings` → `SAIF.Services.Printing.My.MySettings` | `System.Configuration.ClientSettingsSection` | Application-scoped typed settings section (Settings Designer / `My.Settings`) holding the two design-time Web Reference URLs above. Present only in `app.config`. |
| `applicationSettings` → `SAIF.MySettings` | `System.Configuration.ClientSettingsSection` | Declared section group entry in `app.config`; not populated with a values block containing this library's own settings — a solution-wide/shared settings section name inherited from the project template, not used by this library's own consuming code.* |
| `applicationSettings` → `SAIF.My.MySettings` | `System.Configuration.ClientSettingsSection` | Declared section in `app.config`'s `<configSections>`; no corresponding values block is present, and no code in this library references it. Likely inherited boilerplate from the project template.* |
| `system.diagnostics` (`DefaultSource`/`DefaultSwitch`/`FileLog`) | Standard `System.Diagnostics` trace source/listener configuration (`Microsoft.VisualBasic.Logging.FileLogTraceListener`) | Standard VB "My.Application.Log" logging scaffolding, present in `app.config` only. No explicit logging call using `My.Application.Log` was found in the scanned source.* |
| `system.data` → `DbProviderFactories` | N/A (provider factory registration, not a config section handler) | Registers/overrides the `Oracle.ManagedDataAccess.Client` provider factory. Present in both `Web.config` and `app.config`; same transitive-dependency caveat as the `oracle.manageddataaccess.client` section above.* |

## Environment variance assessment

| Setting key | Varies by environment | Classification basis |
| --- | --- | --- |
| `documentGeneratorServiceUrl` | Yes | Contains a service endpoint URL (xPression Design document-generation SOAP service); different per environment (dev/test/prod xPression hosts). |
| `documentMSMQPath` | Yes | MSMQ queue path is host/environment-specific (different machine names or queue names per environment). |
| `idmFilePath` | Yes* | File-system path likely differs between environments (different IDM storage mounts per environment); inferred from naming and from the pattern of the other three keys, not directly confirmed. |
| `sqlReportingServiceUrl` | Yes | Contains a service endpoint URL (SSRS `ReportExecutionService`); different per environment (dev/test/prod SSRS hosts). |
| `IsProduction` / `IsWeb` | Yes | Boolean environment-service properties whose value is inherently derived from the runtime deployment environment/host type, not a static config key. |
| `SAIF_Services_Printing_xpresso_clsGenerate` (My.Settings) | No | Static, application-scoped design-time default embedded in `app.config`; not read by consuming code at runtime (superseded by `documentGeneratorServiceUrl`), so it does not vary per deployed environment in practice.* |
| `SAIF_Services_Printing_SharepointReporting_ReportExecutionService` (My.Settings) | No | Same as above — static design-time default, superseded at runtime by `sqlReportingServiceUrl`.* |
| `oracle.manageddataaccess.client` / `DbProviderFactories` registration | No | Fixed driver-registration configuration tied to the referenced Oracle.ManagedDataAccess package version, not an environment-varying runtime value.* |

## Configuration dependencies

| Dependency | Type | Required at | Impact if missing |
| --- | --- | --- | --- |
| Centralized SAIF environment-configuration service (`AppGlobal.EnvironmentService`) | Service | Runtime (constructor of `clsPrint`, `clsRSPrint`, `Reporting.ReportBase`) | If `GetConfigSetting` cannot resolve `documentGeneratorServiceUrl`, `documentMSMQPath`, `idmFilePath`, or `sqlReportingServiceUrl`, the corresponding SOAP proxy URL or MSMQ path field would be empty/invalid, causing SOAP calls or MSMQ sends to fail at first use.** |
| MSMQ queue at `documentMSMQPath` | Infrastructure | Runtime (asynchronous `clsPrint.distributeDocument`) | If the queue is unreachable or misconfigured, opening/sending to the `MessageQueue` throws, and the MSMQ transaction (if started) is rolled back. |
| External xPression Design server (`documentGeneratorServiceUrl`) | External service | Runtime (all `clsPrint` operations) | SOAP calls to `xpresso.clsGenerate` fail if the endpoint is unreachable or misconfigured. |
| External SSRS report server (`sqlReportingServiceUrl`) | External service | Runtime (`clsRSPrint.PreviewDocument`) | SOAP calls to `SharepointReporting.ReportExecutionService` fail if the endpoint is unreachable or misconfigured. |

## Configuration summary

- **Total unique configuration items:** 8 — 4 Environment API `GetConfigSetting` keys (`documentGeneratorServiceUrl`, `documentMSMQPath`, `idmFilePath`, `sqlReportingServiceUrl`), 2 boolean environment-service properties (`IsProduction`, `IsWeb`), and 2 `ApplicationSettingsBase` design-time settings (`SAIF_Services_Printing_xpresso_clsGenerate`, `SAIF_Services_Printing_SharepointReporting_ReportExecutionService`).
- **Secure/encrypted settings count:** 0.
- **Database connections count:** 0.
- **Custom configuration sections present:** Yes — 3 declared `applicationSettings` sections/groups plus `oracle.manageddataaccess.client`, `DbProviderFactories`, and `system.diagnostics` trace configuration.
- **Runtime-source uncertainty:** All 4 Environment API keys have unknown runtime values — no static fallback exists in this library's `Web.config`/`app.config`.**

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

## Sources
- `SAIF.Services.Printing\clsPrint.vb`
- `SAIF.Services.Printing\clsRSPrint.vb`
- `SAIF.Services.Printing\Reporting\ReportBase.vb`
- `SAIF.Services.Printing\Web.config`
- `SAIF.Services.Printing\app.config`
- `SAIF.Services.Printing\My Project\Settings.Designer.vb`
- `SAIF.Services.Printing\SAIF.Services.Printing.vbproj`
